<?php
class UsuariosController extends Zend_Controller_Action
{
    public function init()
    {
        $formLogin = new Application_Form_Login();
        $this->view->formLogin = $formLogin;
        $model =new Application_Model_Noticias();
        $this-> view->noticias=$model->getAll();
        $modelTesis =new Application_Model_Tesis();
        $this-> view->tesis=$modelTesis->getAll();
        $modelPersona =new Application_Model_Personas();
        $this-> view->persona=$modelPersona->getAll();
        if(Zend_Auth::getInstance()->hasIdentity()){
            $skin=Zend_Auth::getInstance()->getIdentity()->skin;
            $this->_helper->Cambiarskin($skin);
        }
    }          
    //funcio para el logeo de Usuarios donde inicializamos un 
    //formulario formLogin para que Zend_Auth compare si sus 
    //campos coinciden con los de algun usuario de la base de datos
    public function loginAction()    
    {
        if(Zend_Auth::getInstance()->hasIdentity()){
            $this->_redirect('/');   
        }      
        $request=$this->getRequest();
        $formLogin = new Application_Form_Login();
        if( $request->isPost() ){
            if( $formLogin->isValid( $this->_request->getPost() )) {
                $authAdapter=$this->getAuthAdapter();
                $username=$formLogin->getValue('usuario');
                $password=$formLogin->getValue('password');
                $authAdapter->setIdentity($username)
                            ->setCredential($password);
                $auth = Zend_Auth::getInstance();
                $result = $auth->authenticate($authAdapter);
                if( $result->isValid() ){
                    $identity=$authAdapter->getResultRowObject();
                    $authStorage=$auth->getStorage();
                    $authStorage->write($identity);
                    return $this->_redirect('/');
                }else{
                    $this->view->errorMessage="el nombre o pasword es incorrecto";
                }
            }
        }
        $this->view->formLogin = $formLogin;
 
    }
    //funcion para limpiar a Zend_Auth 
    public function logoutAction(){
        
        Zend_Auth::getInstance()->clearIdentity();
        $this->redirect('/');
    }
    //funcion para decirle a Zend_Auth en que tabla estan los usuarios y sus 
    //password de la base de datos
    private function getAuthAdapter(){
          $authAdapter=new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
          $authAdapter->setTableName('usuario')
                            ->setIdentityColumn('usuario')
                            ->setCredentialColumn('password');
          return $authAdapter;
    }
    
    public function crearusuarioAction()
    {   
        $formUsuario=new Application_Form_Usuario;
        $clave= $this->randomClave(20); 
        
        if($this->getRequest()->isPost()){
            if($formUsuario->isValid($this->_getAllParams())){
                $modelUsuario=new Application_Model_Usuarios();
                $modelUsuario->save($formUsuario->getValues(),$clave); 
                
                $email=$formUsuario->getValue('nuevoEmail');
                
                
                $this->enviaremail($email,$clave);
                echo '<script type="text/javascript">';
                echo 'Mostrar()';
                echo '</script>';
            }
        }
        $this->view->formUsuario=$formUsuario;
    }
    public function enviaremail($email,$clave){

         $link ="http://videoteca.local/usuarios/agregarInfoUsuario/".$clave; 
         $smtp = "smtp.gmail.com";
         $cuenta = "sistemasuniversalessrl@gmail.com";
         $login = "llavedeentrada.123";
         $de = "sistemasuniversalessrl@gmail.com";
         $para = $email;
         $asunto = "activacion de cuenta";
         $mensage = "para activar su cuenta haga click aqui -> {$link} y llene sus datos";
         try {
            $config = array (
            'auth' => 'login',
            'username' => $cuenta,
            'password' => $login,
            'ssl' => 'ssl',
            'port' => '465'
            );
            $mailTransport = new Zend_Mail_Transport_Smtp($smtp, $config);
            $mail = new Zend_Mail();
            $mail->setFrom($de);
            $mail->addTo($para);
            $mail->setBodyText($mensage);
            $mail->setSubject($asunto);
            $mail->send($mailTransport);
        } catch (Exception $e){
            echo ($e->getMessage());
        }          
            
    }
    public function randomClave($tamaño) {
        $random="";
        $todo = "1234567890abcdefghijklmnopqrstuvwxyz";
        for($i = 0; $i < $tamaño; $i++) {
            $random .= $todo{rand(0, 35)};
        }

        return $random;
    } 
    
    public function buscarClave($url){
        $modelUsuarios=new Application_Model_Usuarios();
        $usuario=$modelUsuarios->getAll();
        $encontrado="";
        foreach($usuario as $usuarios){
             $clave="/usuarios/agregarInfoUsuario/".$usuarios->clave;
             if($clave == $url){
                 $encontrado=$usuarios->id_usuario;
             }
        }
        return $encontrado;
       
    }
    public function agregarinfousuarioAction(){

        $formPusuario=new Application_Form_Persona();
        $modelUsuarios=new Application_Model_Usuarios();
        $modelPersonas=new Application_Model_Personas();
        $link=$this->getRequest()->getRequestUri();
        $id_usuario=$this->buscarClave($link);
        
        if($this->getRequest()->isPost()){
            if($formPusuario->isValid($this->getAllParams())){
                $modelPersonas->save($formPusuario->getValue('nombre'),$formPusuario->getValue('apellidoPaterno'),$formPusuario->getValue('apellidoMaterno'),$formPusuario->getValue('email'));
                $usuario=$modelPersonas->getAll();
                $count=count($usuario);
                $idUs=$usuario[$count-1]->id_persona;
                $modelUsuarios->activar($id_usuario,$formPusuario->getValue('direccion'),$formPusuario->getValue('telefono'),$idUs);
     
                return $this->_redirect('/');
            }
        }
        $this->view->formPusuario=$formPusuario;
    }
}